package leetCode;

import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;


/**
 * 给出 N 名运动员的成绩，找出他们的相对名次并授予前三名对应的奖牌
 * 前三名运动员将会被分别授予 “金牌”，“银牌” 和“ 铜牌”（
 * 'Gold Medal', '
 * Silver Medal', 'Bronze Medal'）。
 * 输入: [5, 4, 3, 2, 1]
 * 输出: ['Gold Medal', 'Silver Medal', 'Bronze Medal', '4', '5']
 * 解释: 前三名运动员的成绩为前三高的，因此将会分别被授予 “金牌”，
 * “银牌”和“铜牌” ('Gold Medal', 'Silver Medal' and 'Bronze Medal').
 * 余下的两名运动员，我们只需要通过他们的成绩计算将其相对名次即可。
 *
 * @Author: chen jinxu
 * @Date: 2021/11/21 10:25
 * @Description: //TODO
 */
public class LeetCode506 {
    public static void main(String[] args) {
        int[] score = {5, 4, 2, 3, 1};
        String[] result = findRelativeRanks(score);
        System.out.println(Arrays.toString(result));
    }

    public static String[] findRelativeRanks(int[] score) {
        int len = score.length;
        String[] result = new String[len];
        //复制数组  1
        //int[] newInt = score.clone();
        // 复制数组 2
        int[] newInt = Arrays.copyOf(score, len);
        Arrays.sort(newInt);
        HashMap<Integer, String> map = new HashMap<>();
        for (int i = len - 1; i >= 0; i--) {
            if (i == len - 1) {
                map.put(newInt[i], "Gold Medal");
            } else if (i == len - 2) {
                map.put(newInt[i], "Silver Medal");
            } else if (i == len - 3) {
                map.put(newInt[i], "Bronze Medal");
            } else {
                map.put(newInt[i], len - i + "");
            }
        }
        for (int i = 0; i < len; i++) {
            int key = score[i];
            String value = map.get(key);
            result[i] = value;
        }
        return result;
    }
}
